﻿//* Copyright(C) 2005-2014, all rights reserved.
//*
//* The following code is copyrighted and contains proprietary information
/* and trade secrets of Foxit Software Inc.      
**************************************************************************
*/
define(function (require, exports, module) {
    require('./Tools.js');

    /**
     * @description Interface for UI tools.
     * @class  Represents the base interface for Document Viewer UI tools.
     * @memberOf WebPDF.Tools
     */
    WebPDF.Tools.IReaderToolHandler = function () {
    };

    WebPDF.Tools.IReaderToolHandler.prototype = {
    	/**
    	  * @description The event triggers when this tool is initializing.
    	  * @param {WebPDF.ReaderApp} readerApp The reference to the current app instance.
    	*/
        onInit : function (readerApp) {
        },
        /**
         * @description The event triggers when this tool is destroyed.
         */
        onDestroy : function () {
        },
        /**
         * @description Get name of this tool.
         * @return {String} Name of this tool.
         */
        getName : function () {
        },
        /**
         * @description The event triggered when this tool is activated.
         * Typically use for changing mouse cursors, and initializing states for the tool.
         */
        onActivate : function () {
        },
        /**
         * @description The event triggered when this tool is deselected.
         * Typically use for changing mouse cursors, and cleaning up states for the tool.
         */
        onDeactivate : function () {
        },
		/**
        * @description Check whether this tool is enabled.
        * @return {Boolean} Return true if this tool is enabled.
        */
        isEnabled : function () {
            return false;
        },
        /**
         * @description Check whether the mouse event is processing by this tool.
         * @return {Boolean} Return true if the mouse event is processing by this tool, otherwise return false.
         */
        isProcessing : function () {
            return false;
        },

		/**
        * @description The event triggers when the left mouse button is down.
        * @param {Object} event The event object containing mouse coordinates.
        * @return {Boolean} Return true if you don't want other tools to process this event, otherwise return false.
        */
        onLButtonDown : function (event) { },
		/**
        * @description The event triggers when the left mouse button is up.
        * @param {Object} event The event object containing mouse coordinates.
        * @return {Boolean} Return true if you don't want other tools to process this event, otherwise return false.
        */
        onLButtonUp  :  function (event) { },
		/**
        * @description The event triggers when the mouse left button is double clicked.
        * @param {Object} event The event object containing mouse coordinates.
        * @return {Boolean} Return true if you don't want other tools to process this event, otherwise return false.
        */
        onLButtonDblClk  :  function (event) { },
		/**
        * @description The event triggers when the mouse moves.
        * @param {Object} event The event object containing mouse coordinates.
        * @return {Boolean} Return true if you don't want other tools to process this event, otherwise return false.
        */
        onMouseMove  :  function (event) { },
		/**
        * @description Right mouse button down.
        * @param {object} event The event object containing mouse coordinates.
        * @return {Boolean} Return true if you don't want other event handler to process this event, otherwise ,return false.
        * @ignore
        */
        onRButtonDown  :  function (event) { },
		/**
        * @description right mouse button up.
        * @param {object} event the event object containing mouse coordinates.
        * @return {Boolean} return true if you don't want other event handler to process this event, otherwise ,return false.
         * @ignore
        */
        onRButtonUp  :  function (event) { },
		/**
        * @description right mouse button double click.
        * @param {object} event the event object containing mouse coordinates.
        * @return {Boolean} return true if you don't want other event handler to process this event, otherwise ,return false.
         * @ignore
        */
        onRButtonDblClk  :  function (event) { },
        onMouseWheel  :  function (event) { },
        onMouseOver  :  function (event) { },
        onMouseOut  :  function (event) { },
        /**
         * @description The event triggers when the mouse enters the viewer area.
         * @param {object} event The event object containing mouse coordinates.
         * @return {Boolean} Return true if you don't want other tools to process this event, otherwise return false.
         */
        onMouseEnter  :  function (event) { },
		/**
        * @description The event triggers when the mouse leaves the viewer area.
        * @param {object} event The event object containing mouse coordinates.
        * @return {Boolean} Return true if you don't want other tools to process this event, otherwise return false.
        */
        onMouseLeave  :  function (event) { },
        /**
         * Trigger when double tap on a touchable device.
         * @param {Object} event event information of the event.
         * @ignore
         */
        onDoubleTap: function(event) {},
        /**
         * Trigger when pinch in on a touchable device.
         * @param {Object} event event information of the event.
         * @ignore
         */
        onPinchIn: function(event) {},
        /**
         * Trigger when pinch out on a touchable device.
         * @param {Object} event event information of the event.
         * @ignore
         */
        onPinchOut: function(event) {},
        /**
         * Trigger when hold on a touchable device.
         * @param {Object} event event information of the event.
         * @ignore
         */
        onHold: function(event) {}
    };

    return WebPDF.Tools.IReaderToolHandler;
});